# -*- coding: utf-8 -*-
"""
@Time ： 2018-12-21 21:07
@Auth ： Mr. William 1052949192
@Company ：特斯汀学院 @testingedu.com.cn
@Function ：读写Excel文件
"""
import os, xlrd, xlwt
from xlutils.copy import copy

from common.Logger import logger


class Reader:
    """
        powered by Mr Will
           at 2018-12-21
        用来读取Excel文件内容
    """

    def __init__(self):
        # 整个excel工作簿缓存
        self.workbook = None
        # 当前工作sheet
        self.sheet = None
        # 当前sheet的行数
        self.rows = 0
        # 当前读取到的行数
        self.r = 0

    # 打开excle
    def open_excel(self,srcfile):
        # 如果打开的excle不存在就报错
        if not os.path.isfile(srcfile):
            logger.error(srcfile + f',用例不存在，请检查！')
            return

        # 设置读取excle使用utf8格式
        xlrd.Book.encoding = "utf8"
        # 读取excle内容到缓存
        self.workbook = xlrd.open_workbook(filename=srcfile)
        print(self.workbook)
        # 选择第一个sheet页,返回的sheet页的编号和名称   （Sheet  0:<登录接口>）
        self.sheet = self.workbook.sheet_by_index(0)
        print(self.sheet)
        # 设置rows为当前sheet页的行数,返回总行数
        self.rows = self.sheet.nrows
        print(self.rows)
        # 设置默认读取第一行
        self.r = 0
        return

    # 获取sheet页面
    def get_sheets(self):
        # 获取所有sheet的名字，并返回为一个列表   ['登录接口', '校验正常流程']
        sheets = self.workbook.sheet_names()
        print(sheets)
        return sheets

        # 切换sheet页面

    def set_sheet(self, name):
        # 通过sheet名字，切换sheet页面
        print ( '测试代码' )
        # 通过sheet页名称获取sheet页
        self.sheet = self.workbook.sheet_by_name ( name )
        print ( self.sheet )
        # 根据获得sheet页，获得当前sheet页面的总行数
        self.rows = self.sheet.nrows
        print ( self.rows )
        # 默认显示第一行
        self.r = 0
        return

    # 读取当前sheet全部行
    def readline(self):
        # 保存当前sheet的所有行的内容
        lines = []
        # 如果当前行不是最后一行， 则向下读取一行
        while self.r < self.rows:
            row1 = None
            # 读取r行的内容
            row = self.sheet.row_values(self.r)
            print(f"第",self.r+1,f"行的内容：",row)
            print('\n-------------------换行符-------------------')
            # 设置r的下一行
            self.r = self.r + 1
            # 辅助遍历行里面的列
            i = 0
            row1 = row
            # 把读取的数据都变为字符串
            for strs in row:
                row1[i] = str(strs)
                i = i + 1
            lines.append(row1)
        print(f'打印所有内容：',lines)
        return lines








if __name__ == '__main__':
    reader = Reader()
    # 打开一个excel
    reader.open_excel('../../lib/cases/HTTP接口用例.xls')
    # 获取所有sheet
    sheets = reader.get_sheets()
    for sheet in sheets:
        # 设置读取的sheet页面
        reader.set_sheet(sheet)
        # 读取当前sheet的所有行
        lines = reader.readline()
        print(lines)

    # writer = Writer()
    # writer.copy_open('../../lib/cases/HTTP接口用例.xls','../../lib/cases/result-HTTP接口用例.xls')
    #
    # # 获取所有sheet
    # sheets = writer.get_sheets()
    # writer.set_sheet(sheets[0])
    # # 在原格式上写入内容
    # writer.write(1,1,'Will')
    # # 更改颜色写入
    # writer.write(1,2,'hello',color=2)
    # writer.save_close()

